/**
 **********************************************************************************************************************
 * @file    cot_task.h
 * @brief   该文件提供任务时间片论任务调度功能函数原型
 **********************************************************************************************************************
 */

/* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/
#ifndef _COT_TASK_H_
#define _COT_TASK_H_

/* Includes ----------------------------------------------------------------------------------------------------------*/
#include <stdint.h>

/* Exported types ----------------------------------------------------------------------------------------------------*/
typedef void (*TaskRunCB)(void); /* 任务回调函数类型定义，任务函数不能被阻塞，应尽量保证执行时间小于1ms */

/* Exported constants ------------------------------------------------------------------------------------------------*/
/* Exported macro ----------------------------------------------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------------------------------------------------*/

extern void cotTask_Init(void);    /* 任务系统初始化 */
extern void cotTask_Remarks(void); /* 任务调度标记，需要在1ms定时器中断中调用 */
extern void cotTask_Start(void);   /* 启动任务调度系统，调用后不会返回 */

extern void cotTask_Creat(TaskRunCB pfnTask, uint16_t time, uint8_t priority); /* 创建普通任务 */
extern void cotTask_Destory(TaskRunCB pfnTask);                                /* 销毁普通任务 */

extern void cotTask_IsrCreat(TaskRunCB pfnTask, uint16_t time); /* 创建中断任务 */
extern void cotTask_IsrDestory(TaskRunCB pfnTask);              /* 销毁中断任务 */

extern uint8_t cotTask_GetLoadRate(void);  /* 获取系统负载百分比(0-100) */
extern uint32_t cotTask_GetSysTimer(void); /* 获取系统运行的毫秒数 */

#endif /* !_COT_TASK_H_ */
